#分组
# 匹配数字0-100
import re

n = '9'
result = re.match(r'[1-9]?\d',n)
print(result)

n = '1000'
result = re.match(r'[1-9]+\d*',n)
print(result)
# 改进
n = '100'
result = re.match(r'[1-9]\d?$|100$',n)
print(result)

# 验证输入的邮箱 163 126 qq
email = '123456@qq.com'
result = re.match(r'\w{5,20}@(163|126|qq)\.(com|cn)$',email)
print(result)
print('-----------------------------------')

# 起名的方式： (?P<name>正则) (?P=name)引用前面分组的内容
msg = '<html><h1>abc</h1></html>'

result = re.match(r'<(?P<name1>\w+)><h1>(?P<name2>\w+)</h1></(?P=name1)>',msg)
print(result)
print(result.group(1))
print(result.group(2))
'''
分组() -->result.group(1) 获取组中匹配内容
不需要引用分组的内容：
     result = re.match(r'<[0-9a-zA-Z]+>(.+)</[0-9a-zA-Z]+>',msg)
     print(result)
     print(result.group(1)) 
引用分组匹配的内容：
     1.number \number 引用第几个分组
        msg = '<html><h1>abc</h1></html>'
        result = re.match(r'<([0-9a-zA-Z]+)><([0-9a-zA-Z]+)(.+)</\2></\1>$',msg)
        print(result)
     2.?P<名字>
        msg = '<html><h1>abc</h1></html>'
        result = re.match(r'<(?P<name1>\w+)><h1>(?P<name2>\w+)</h1></(?P=name1)>',msg)
        print(result)
        print(result.group(1))
        
re模块
    match() 从字符串开始位置匹配
    search() 在字符串中搜索匹配项
    findall() 在字符串中搜索所有匹配项
    sub(正则表达式，‘新内容’，string)  替换
    split() 分割
'''
result = re.sub(r'\d+','100','java:99,python:100')
print(result)

def func(temp):
    num = temp.group()
    num1 = int(num) + 1
    return  str(num1)
result = re.sub(r'\d+',func,'java:99,python:100')
print(result)

result = re.split(r'[:,]','java:99,python:100')
print(result)
